package ch.ifage.business.dom;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
/**
 * Mod�le d'un sinistre.
 * @author Betty B�
 *
 */
@Entity
@Table(name= "sinistres")
public class Sinistre implements Serializable{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 2326924163759014958L;
	@Id
	@Column(name= "id_sinistre")
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private int mId;
	/** * Police dans laquelle le sinistre est d�clar�.*/
	@ManyToOne
	@JoinColumn(name = "id_police")
	//@Transient
	private Police mPolice;
	/** * Num�ro de sinistre.*/
	@Column(name = "numero_sinistre")
	private String mNumeroSinistre;
	/** * Pr�nom du sinistr�.*/
	@Column(name = "prenom")
	private String mPrenom;
	/** * Nom du sinistr�.*/
	@Column(name = "nom")
	private String mNom;
	/** * Date du d�but de la p�riode d'indemnisation.*/
	@Temporal(TemporalType.DATE)
	@Column(name= "date_debut")
	private Date mDateDebut;
	/** * Date de fin de la p�riode d'indemnisation.*/
	@Temporal(TemporalType.DATE)
	@Column(name= "date_fin")
	private Date mDateFin;
	/** * montant de l'ind�mnisation.*/
	@Column(name = "indemnite")
	private double mIndemnite;
	/** * Indicateur du statut du sinistre, il est actif
	 * tant que sa police n'a pas �t� supprim�e ou d�sactiv�e.*/
	@Column(name = "actif")
	private boolean mActif;
	/** * D�termine ce qui est �crit dans le champs statut
	 *  selon que le sinistre soit actif ou non.*/
	@Column(name = "statut")
	private String mStatut;
	/** *Constructeur.
	 * La sinistre est actif par d�faut et
	 *  son statut est indiqu� comme OK en cons�quence */
	public Sinistre()  {
		this.setActif(true);
		this.setStatut("Ok");
	}
	
	public int getId() {
		return mId;
	}
	/** * @param actif
	 *    Sp�cifie si le sinistre est actif.*/
	public final void setActif(final boolean actif) {
		this.mActif = actif;
	}
	/** * @return l'�tat du sinistre. */
	public final boolean getActif() {
		return mActif;
	}
	/** * @param statut
	 *    L'statut � sp�cifier.*/
	public final void setStatut(final String statut) {
		this.mStatut = statut;
	}
	/** * @return le statut. */
	public final String getStatut() {
		return this.mStatut;
	}
	/** * @return la police. */
	public final Police getPolice() {
		return mPolice;
	}
	/** * @param police
	 *    La police � sp�cifier.*/
	public final void setPolice(final Police police) {
		this.mPolice = police;
	}
	/** * @return le num�ro de sinistre. */
	public final String getNumeroSinistre() {
		return mNumeroSinistre;
	}
	/** * @param numeroSinistre
	 *    Le num�ro de sinistre � sp�cifier.*/
	public final void setNumeroSinistre(final String numeroSinistre) {
		this.mNumeroSinistre = numeroSinistre;
	}
	/** * @return le pr�nom du sinistr�. */
	public final String getPrenom() {
		return mPrenom;
	}
	/** * @param prenom
	 *    Le pr�nom du sinistr� � sp�cifier.*/
	public final void setPrenom(final String prenom) {
		this.mPrenom = prenom;
	}
	/** * @return le nom du sinistr�. */
	public final String getNom() {
		return mNom;
	}
	/** * @param nom
	 *    Le nom du sinistr� � sp�cifier.*/
	public final void setNom(final String nom) {
		this.mNom = nom;
	}
	/** * @return la date de d�but de l'indemnisation. */
	public final Date getDateDebut() {
		return mDateDebut;
	}
	/** * @param dateDebut
	 *    La date de d�but � sp�cifier.*/
	public final void setDateDebut(final Date dateDebut) {
		this.mDateDebut = dateDebut;
	}
	/** * @return la date de fin de l'indemnisation. */
	public final Date getDateFin() {
		return mDateFin;
	}
	/** * @param dateFin
	 *    La date de fin � sp�cifier.*/
	public final void setDateFin(final Date dateFin) {
		this.mDateFin = dateFin;
	}
	/** * @return le montant de l'indemnit�. */
	public final double getIndemnite() {
		return mIndemnite;
	}
	/** * @param indemnite
	 *    Le montant de l'indemnit� � sp�cifier.*/
	public final void setIndemnite(final double indemnite) {
		this.mIndemnite = indemnite;
	}
	/** * @return la cl�. */
	public final String getKey()  {
		return String.valueOf(hashCode());
	}
    /** * @return le numero du sinistre dont on obtient le hashCode,
	 * sinon -1 est retourn�. */
	public final int hashCode() {
		if (this.mNumeroSinistre != null)  {
			return this.mNumeroSinistre.hashCode();
		} else {
			return -1;
		}
	}

}
